package com.dqyt.khjc.service;

import com.dqyt.app.bean.OtherInput;
import com.dqyt.app.mongo.OtherInputDao;
import com.dqyt.common.check.CheckTool;
import com.dqyt.common.constant.AuthorityID;
import com.dqyt.common.utils.UserInfoUtil;
import com.dqyt.khjc.bean.ResultMsg;
import com.dqyt.khjc.bean.SwitchBean;
import com.dqyt.khjc.bean.User;
import com.dqyt.khjc.config.Config;
import com.dqyt.khjc.mapper.SwitchMapper;
import com.dqyt.khjc.swicth.SwitchConfig;
import com.dqyt.khjc.utils.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Service
public class SwitchService {

    @Autowired
    private SwitchMapper switchMapper;

    @Autowired
    private OtherInputDao otherInputDao;

    /**
     * 查询所有开关
     * @param request
     * @return
     */
    public  ResultMsg getSwitchList(HttpServletRequest request){
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            // 权限检查
            // 首先取得用户信息
            User user = UserInfoUtil.getUser_Web(request);

            // 用户权限检查 是否可以新增客户信息
//            if (!CheckTool.checkAuthority(user, AuthorityID.XTSZ) ) {
//                ret.setCode(ResultMsg.ERROR);
//                ret.setMsg("你没有对应的操作权限");
//                return ret;
//            }
            List<SwitchBean> switchBeans = switchMapper.getSwitchList();
            ret.setCode(ResultMsg.SUCESS);
            ret.setMsg("查询成功");
            ret.setData(switchBeans);

        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }

    /**
     * 修改开关状态
     *
     * @param id
     * @param swState 0:关  1：开
     */
    public ResultMsg updateSwitchById(HttpServletRequest request,int id, int swState){
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            // 权限检查
            // 首先取得用户信息
            User user = UserInfoUtil.getUser_Web(request);

            if(id ==1 || id ==2 || id ==3){
                // 用户权限检查 是否可以新增客户信息
//                if (!CheckTool.checkAuthority(user, AuthorityID.XTSZ_DXSZ)) {
//                    ret.setCode(ResultMsg.ERROR);
//                    ret.setMsg("你没有对应的操作权限");
//                    return ret;
//                }
            }else if(id ==4){
                // 用户权限检查 是否可以新增客户信息
//                if (!CheckTool.checkAuthority(user, AuthorityID.XTSZ_KHZCSZ)) {
//                    ret.setCode(ResultMsg.ERROR);
//                    ret.setMsg("你没有对应的操作权限");
//                    return ret;
//                }
            }else if(id ==5 || id== 6){
                // 用户权限检查 是否可以新增客户信息
//                if (!CheckTool.checkAuthority(user, AuthorityID.XTSZ_QTSZ)) {
//                    ret.setCode(ResultMsg.ERROR);
//                    ret.setMsg("你没有对应的操作权限");
//                    return ret;
//                }
            }else if(id ==7){
                // 用户权限检查 是否可以新增客户信息
//                if (!CheckTool.checkAuthority(user, AuthorityID.XTSZ_RWFPSZ)) {
//                    ret.setCode(ResultMsg.ERROR);
//                    ret.setMsg("你没有对应的操作权限");
//                    return ret;
//                }
            }

            long updateTime = TimeUtil.currentTimeMillis();
            String updateUser = String.valueOf(user.getUserId());

            int res = switchMapper.updateSwitchById(id,swState,updateTime,updateUser);
            if(res <= 0){
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("数据异常");
                return ret;
            }
            // 更新一次内存数据
            List<SwitchBean>  lists = switchMapper.getSwitchList();
            SwitchConfig.setDatas(lists); // 更新整个内存数据

            ret.setCode(ResultMsg.SUCESS);
            ret.setMsg("操作成功");
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }




    /**
     *
     * @param request
     * @return
     */
    public  ResultMsg getJydwsqh(HttpServletRequest request){
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值

            OtherInput otherInput = otherInputDao.getOtherInput();
            if( null  == otherInput){
                otherInput = new OtherInput();
                otherInput.mz_jydwsqh =  Config.MZ_JTDWSQH;
                otherInput.qp_jydwsqh =  Config.QP_JTDWSQH;
                otherInput.ylb_jydwsqh=  Config.YLB_JTDWSQH;
            }
            ret.setCode(ResultMsg.SUCESS);
            ret.setMsg("查询成功");
            ret.setData(otherInput);
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }


    /**
     *
     * @param request
     * @return
     */
    public  ResultMsg updateJydwsqh(HttpServletRequest request,String mz_jydwsqh,String qp_jydwsqh,String ylb_jydwsqh) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            OtherInput otherInput = otherInputDao.getOtherInput();
            if( null  != otherInput){
                otherInput.mz_jydwsqh =  mz_jydwsqh;
                otherInput.qp_jydwsqh =  qp_jydwsqh;
                otherInput.ylb_jydwsqh=  ylb_jydwsqh;
                otherInputDao.save(otherInput);
                ret.setCode(ResultMsg.SUCESS);
                ret.setMsg("修改成功");
                ret.setData(otherInput);
            }else{
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("数据异常请稍候再试");
                ret.setData(otherInput);
            }

        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }



}
